package com.example.carapi.service.implement;

import com.example.carapi.bean.User;
import com.example.carapi.mapper.UserMapper;
import com.example.carapi.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserServiceImplement implements UserService {

    @Autowired
    private UserMapper userMapper;
    /**
     * TODO
     * private final UserMapper userMapper;
     * public UserServiceImplement(UserMapper userMapper) {this.userMapper = userMapper;}
     * .@Autowired
     * .private UserMapper userMapper;
     * 在Spring Boot项目中，Idea不建议使用字段注入的原因是因为字段注入会破坏Spring的依赖注入原则，这样会导致代码的可维护性和可测试性下降。
     * 使用字段注入会使类之间的依赖关系不清晰，也会使代码变得难以理解和调试。
     * 相反，建议使用构造函数注入或setter方法注入来实现依赖注入，这样可以使依赖关系更加明确，代码更加可读和可测试。
     */

    @Override
    public User getUserById(Long id) {
        return userMapper.getOne(id);
    }

    @Override
    public List<User> getUsers() {
        return userMapper.getAll();
    }

    @Override
    public void addUser(User user) {
        userMapper.insert(user);
    }
    @Override
    public void addUserWithId(User user){
        userMapper.insertWithId(user);
    }

    @Override
    public void updateUser(User user) {
        userMapper.update(user);
    }

    @Override
    public void deleteUserById(Long id) {
        userMapper.delete(id);
    }
}
